MuviPe · Rewards & Playback
Buying a ticket starts two things that never touch each other again: an affiliate tree that fills toward 363 positions and pays out, and a watch-time pool that every device on the account draws down together. Everything on the Dashboard, Tickets, Devices and Playback screens is a different view onto those same two numbers.
From src/lib/tickets-data.ts and
src/lib/playback-data.ts — how a ticket, its devices, and
a top-up all connect to one shared allowance.
This is the one fact the whole feature depends on: running out of watch time is not the same event as the tree closing.
Affiliate clock
Counts positions filled toward 363, independent of how much has been watched. A ticket can close on 363 with time to spare, or sit at 40% filled while its watch time is long gone — the tree keeps filling and keeps paying either way.
Watch-time clock
Counts minutes spent against the allowance a ticket bought. Running it out only closes playback — it never closes the ticket, and a top-up is the only way to add more of it.
Each screen renders one of these; none of them keep their own copy of
the numbers — they're all derived from the ticket's
consumed percent so the figures can't drift apart.
Opens the tree and sets the allowance. Runs the affiliate clock.
The pool itself — built from the ticket's
consumed percent, never stored as raw minutes.
Belongs to the account, not to a ticket. Every device here can spend from any ticket's pool.
Read-only view: which device has which title open, and that session's slice of the pool.
Buys minutes only. No new position, no tree, no commission — priced apart from a ticket for exactly that reason.